#include <iostream>
#include <pthread.h>
#include <string.h>
#include <unistd.h>
#include <vector>
using namespace std;
vector<pthread_t> v;
int *ptr = nullptr;
__thread int cnt = 0;
void *handler(void *arg)
{
    // sleep(1);
    // int i = 10;
    // // if (pthread_self() == v[1])
    // // {
    // //     ptr=&i;
    // // }
    // if((long long)arg==1)
    // {
    //     ptr = &i;
    // }
    // cout << "线程：" << (long long)arg << "my id:" << pthread_self() << endl;
    int i = 5;
    while (i--)
    {
        printf("pthread_name:%d ---%d %p\n",(long long)arg, cnt, &cnt);
        cnt++; // 对共享资源的访问需要进行保护访问；
    }
    return arg;
}
int main()
{
    // pthread_t tid;
    // int n = pthread_create(&tid,nullptr,handler,nullptr);
    // if(n!=0)
    // {
    //     strerror(n);
    // }
    // n = pthread_join(tid,nullptr);
    for (int i = 0; i < 10; i++)
    {
        pthread_t tid;
        int n = pthread_create(&tid, nullptr, handler, (void *)i);
        v.push_back(tid);
        // sleep(1); // 通过延时，可以确保线程访问共享资源时的安全；
    }
    sleep(1);
    // cout<<"thread 2:i="<<*ptr<<endl;
    for (auto id : v)
    {
        void *retval;
        pthread_join(id, &retval);
        cout << "wait successs" << (long long)retval << endl;
        
    }

    return 0;
}